package com.ruoyi.system.service.impl;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ruoyi.system.domain.WcsPowerExport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.WcsPowerMapper;
import com.ruoyi.system.domain.WcsPower;
import com.ruoyi.system.service.IWcsPowerService;

/**
 * 电能统计Service业务层处理
 * 
 * @author ZYT
 * @date 2021-06-12
 */
@Service
public class WcsPowerServiceImpl implements IWcsPowerService 
{
    Logger logger = LoggerFactory.getLogger(WcsPowerServiceImpl.class);
    @Autowired
    private WcsPowerMapper wcsPowerMapper;

    /**
     * 查询电能统计
     * 
     * @param id 电能统计ID
     * @return 电能统计
     */
    @Override
    public WcsPower selectWcsPowerById(Long id)
    {
        return wcsPowerMapper.selectWcsPowerById(id);
    }

    /**
     * 查询电能统计列表
     * 
     * @param wcsPower 电能统计
     * @return 电能统计
     */
    @Override
    public List<WcsPower> selectWcsPowerList(WcsPower wcsPower)
    {
        if(wcsPower.getBeginTime()==null){
            System.out.println("null");
        }
        if("".equals(wcsPower.getBeginTime())){
            System.out.println("kong");
        }

        return wcsPowerMapper.selectWcsPowerList(wcsPower);
    }

    /**
     * 导出电能统计列表
     *
     * @param wcsPower 电能统计
     * @return 电能统计集合
     */
    @Override
    public List<WcsPowerExport> exportWcsPowerList(WcsPower wcsPower) {
        List<WcsPowerExport> wcsPowerExportList = new ArrayList<>();

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
//            System.out.println("first:"+sdf.format(wcsPowerMapper.selectWcsPowerFisrtTime().getCreatime()));
//            System.out.println("end:"+sdf.format(wcsPowerMapper.selectWcsPowerEndTime().getCreatime()));

            //构造开始时间电能查询参数
            Map<String,Object> startTimeMap = new HashMap<>();
            //如果没有时间参数，默认查询库中开始时间
            if(wcsPower.getBeginTime() !=null && !"".equals(wcsPower.getBeginTime()) ){
                startTimeMap.put("date",wcsPower.getBeginTime());
            }else{
                startTimeMap.put("date", sdf.format(wcsPowerMapper.selectWcsPowerFisrtTime().getCreatime()));
            }
            startTimeMap.put("deviceNo",wcsPower.getDeviceNo());

            //构造结束时间电能查询参数
            Map<String,Object> endTimeMap = new HashMap<>();
            //如果没有时间参数，默认查询库中最后时间
            if(wcsPower.getEndTime() !=null && !"".equals(wcsPower.getEndTime())){
                endTimeMap.put("date",wcsPower.getEndTime());
            }else{
                endTimeMap.put("date",sdf.format(wcsPowerMapper.selectWcsPowerEndTime().getCreatime()));
            }
            endTimeMap.put("deviceNo",wcsPower.getDeviceNo());
//
            List<WcsPower> startTimeList = wcsPowerMapper.selectWcsPowerListForExport(startTimeMap);
            List<WcsPower> endTimeList = wcsPowerMapper.selectWcsPowerListForExport(endTimeMap);

//            List<WcsPower> startTimeList = wcsPowerMapper.selectWcsPowerListForExport(sdf.parse(wcsPower.getBeginTime()));
//            List<WcsPower> endTimeList = wcsPowerMapper.selectWcsPowerListForExport(sdf.parse(wcsPower.getEndTime()));

            for(WcsPower startWcsPower : startTimeList){
                WcsPowerExport wcsPowerExport  = new WcsPowerExport();

                WcsPower endWcsPower = null;
                for(WcsPower endP: endTimeList){
                    if(endP.getDeviceNo().equals(startWcsPower.getDeviceNo())){
                        endWcsPower = endP;
                    }
                }
                if(endWcsPower !=null){
                    wcsPowerExport.setDeviceNo(startWcsPower.getDeviceNo());
                    wcsPowerExport.setBeginTime(startWcsPower.getCreatime());
                    wcsPowerExport.setEndTime(endWcsPower.getCreatime());
                    wcsPowerExport.setBeginValue(startWcsPower.getValue());
                    wcsPowerExport.setEndValue(endWcsPower.getValue());
                    wcsPowerExport.setUsePower(endWcsPower.getValue()-startWcsPower.getValue());
                    wcsPowerExportList.add(wcsPowerExport);
                }
            }
        } catch (Exception e) {
            logger.error("时间格式转化异常",e);
            e.printStackTrace();
        }


        return wcsPowerExportList;
    }

    /**
     * 新增电能统计
     * 
     * @param wcsPower 电能统计
     * @return 结果
     */
    @Override
    public int insertWcsPower(WcsPower wcsPower)
    {
        return wcsPowerMapper.insertWcsPower(wcsPower);
    }

    /**
     * 修改电能统计
     * 
     * @param wcsPower 电能统计
     * @return 结果
     */
    @Override
    public int updateWcsPower(WcsPower wcsPower)
    {
        return wcsPowerMapper.updateWcsPower(wcsPower);
    }

    /**
     * 批量删除电能统计
     * 
     * @param ids 需要删除的电能统计ID
     * @return 结果
     */
    @Override
    public int deleteWcsPowerByIds(Long[] ids)
    {
        return wcsPowerMapper.deleteWcsPowerByIds(ids);
    }

    /**
     * 删除电能统计信息
     * 
     * @param id 电能统计ID
     * @return 结果
     */
    @Override
    public int deleteWcsPowerById(Long id)
    {
        return wcsPowerMapper.deleteWcsPowerById(id);
    }
}
